/**
 * @author： sce
 * @date：17-11-11
 */


/**
 * @description：模板字符串生成类
 */
!(function (global) {

    /**
     * @param：
     *  htmlTmp[string]:生成模板，如`<h1>${head}</h1>`,其中${str} ,str表示对应数据的属性名称
     *  dataTmp[Array]:生成数据，如[{head:'this is a title'}]
     * @methods：
     *  generate():生成函数，如上参数调用的'<h1>this is a title</h1>',
     *  generateUtil(data, html):制定对象（data）和模板（html）匹配，返回匹配成功的字符串
     * @test：
     *  var gene = new GenerateTemplate();
     *  gene.htmlTmp = '<h1>${head}</h1>';
     *  gene.dataTmp = [{
     *      head:'title1'
     *  },{
     *      head:'title2'
     *  },{
     *      head:'title3'
     *  }];
     *  gene.generate(); // <h1>title1</h1><h1>title2</h1><h1>title3</h1>
     * @constructor
     */
    var GenerateTemplate = function () {
        this.data = {};
    };

    GenerateTemplate.prototype = {
        get htmlTmp(){
            return this.data.htmlTmp;
        },
        set htmlTmp(value){
            this.data.htmlTmp = value;
        },
        set dataTmp(value){
            this.data.dataTmp = value;
        },
        get dataTmp(){
            return this.data.dataTmp;
        },
        generate:function () {
            var template = '';
            for(var i =0, len = this.dataTmp.length; i< len; i++){
                template += this.generateUtil(this.dataTmp[i], this.htmlTmp);
            }
            return template;
        },
        generateUtil:function(data,html){
            return  html.replace(/\$\{(\w+)\}/g,function ($1,$2) {
                return data[$2] || '';
            });
        }
    };
    global.GenerateTemplate = GenerateTemplate;
})(typeof window !== "undefined" ? window : this);